package net.lulihu.pangolin.headless.common.container;

import lombok.extern.slf4j.Slf4j;
import net.lulihu.pangolin.headless.common.container.exception.BeanClassExistException;
import net.lulihu.pangolin.headless.common.container.exception.BeanNotExistException;

/**
 * 对象容器工具
 */
@Slf4j
public class BeanUtil {

    private final static DefaultBeanContainer beanContainer = new DefaultBeanContainer();

    private BeanUtil() {
    }

    /**
     * 添加对象到容器中
     *
     * @param bean 对象
     */
    public static void addBean(Object bean) {
        beanContainer.addBean(bean);
    }

    /**
     * 添加对象到容器中
     *
     * @param beanClass 对象类型
     * @param bean      对象
     */
    public static void addBean(Class<?> beanClass, Object bean) {
        beanContainer.addBean(beanClass, bean);
    }

    /**
     * 从容器中获取对象
     *
     * @param beanClass 对象类型
     * @return 指定类型对象
     */
    public static <T> T getBean(Class<T> beanClass) {
        return beanContainer.getBean(beanClass);
    }


    /**
     * 判断容器是否保存该对象类型
     *
     * @param beanClass 对象类型
     * @return true存在反之不存在
     */
    public static boolean contains(Class<?> beanClass) {
        return beanContainer.contains(beanClass);
    }

}
